Micron Document
πŸŽ–οΈGitΠ―Ρ€Π°πŸŽ–οΈ


Displaying Rendered β€’ View raw β€’ Download

.agent_memory/session_context.md 0fccf54462a2476c40357113a8c0f4e2df6dc542 (0fccf544) Text, 18.09 KB

Agent Session Context - Meshtastic Android
This is a dated, append-only handover log. Add new entries at the TOP.
Do NOT edit or remove previous entries β€” stale state claims cause agent confusion.
Format: ## YYYY-MM-DD β€” <summary>

2026-05-20 β€” Resolved Flatpak jitpack.io dependency download 404s in sandboxed offline builds
β€’ Modified T383838GenerateFlatpakSourcesTask in T383838gradle/flatpak.gradle.kts to dynamically detect dependency groups starting with T383838com.github. (which are hosted on JitPack).
β€’ Configured the generation of T383838primaryUrl for these dependencies to resolve directly from T383838https://jitpack.io and created custom high-availability fallback lists.
β€’ Verified that compiling the desktopApp and running the flatpak generator task (T383838./gradlew :desktopApp:assemble :generateFlatpakSourcesFromCache --no-configuration-cache) successfully produces a valid 10MB T383838flatpak-sources.json containing correctly mapped JitPack URLs.
β€’ Ran quality and validation checks: T383838./gradlew spotlessCheck detekt (100% SUCCESSFUL with zero issues).

2026-05-20 β€” Replaced standalone translations landing page with dynamic global header language switcher dropdown
β€’ Deleted redundant standalone page T383838docs/en/translations.md and updated T383838docs/README.md to reflect layout change.
β€’ Completely re-engineered T383838docs/_includes/language_switcher.html to:
1. Dynamically parse active page paths and locales, matching default English pages with translated variants.
2. Bind button text to native active language names (e.g., displaying "БСларуская" instead of hardcoded "English").
3. Pre-verify file existence in T383838site.pages to only render valid translation links, preventing any 404 errors.
4. Automatically hide the language switcher on English pages that do not have translations available yet.
β€’ Modified custom CSS styles in T383838docs/_includes/head_custom.html to use T383838right: 0; left: auto; layout alignment, preventing dropdown menu overflows on smaller screens.
β€’ Successfully built and verified live documentation pages in the browser using the browser subagent, confirming fully operational dynamic swappers.
β€’ Ran quality and validation checks: T383838./gradlew generateDocsBundle validateDocsBundle spotlessCheck detekt (100% SUCCESSFUL).

2026-05-20 β€” Fixed Jekyll documentation site left navigation nesting and sub-page visibility
β€’ Cleaned up redundant and brittle dynamic default scope parent settings in T383838docs/_config.yml.
β€’ Added explicit T383838parent: User Guide front-matter fields to all 17 English user guide markdown files under T383838docs/en/user/.
β€’ Added explicit T383838parent: Developer Guide front-matter fields to all 9 English developer guide markdown files under T383838docs/en/developer/.
β€’ Run and verified Gradle documentation bundle compilation: T383838./gradlew generateDocsBundle validateDocsBundle (PASSED: 672 pages).
β€’ Validated formatting and static analysis rules: T383838./gradlew spotlessApply spotlessCheck detekt (100% green).
β€’ Successfully completed full baseline compilation checks with T383838./gradlew assembleDebug.

2026-05-20 β€” Completely overhauled, simplified, and pushed Flatpak offline source automation
β€’ Completely retired the third-party T383838flatpak-gradle-generator plugin and its associated complex configuration and library overrides (removed ~150 lines of boilerplate).
β€’ Implemented a native JVM-based custom Gradle task T383838GenerateFlatpakSourcesTask inside T383838gradle/flatpak.gradle.kts which walks the post-compilation Gradle cache and generates a perfectly sorted, deduplicated T383838flatpak-sources.json in under 3 seconds.
β€’ Integrated high-availability mirror URL generation (Google, Gradle Plugin Portal, GCP Maven Central, and Aliyun Maven repositories) for complete build robustness during Flathub sandboxed offline builds.
β€’ Streamlined CI workflow files T383838.github/workflows/release.yml and T383838.github/workflows/reusable-check.yml to call our native Gradle task.
β€’ Validated all formatting and static analysis checks using T383838./gradlew spotlessCheck detekt (100% green).
β€’ Committed, successfully pushed the branch T383838fix/flatpak-sources-automation to remote T383838jamesarich, and updated the PR description on GitHub for PR #5533.

2026-05-20 β€” Rebased Flatpak Optimization Branch onto upstream/main
β€’ Successfully rebased the working branch T383838fix/flatpak-sources-automation onto the latest fetched T383838origin/main (upstream).
β€’ Resolved potential rebase history divergence by preserving only our unique conflict-bypassing override commit and skipping squash-merged commits.
β€’ Updated git submodules to track the new upstream base commit.
β€’ Re-ran all baseline quality and static analysis checks (T383838spotlessCheck, T383838detekt) and confirmed 100% success.
β€’ Validated end-to-end correctness by running T383838:combineFlatpakSources to verify complete and correct generation of the consolidated T383838flatpak-sources.json manifest with 2,339 unique resources.

2026-05-20 β€” Overhauled and Bulletproofed Flatpak Source Generation
β€’ Overhauled and streamlined T383838build-logic/convention/build.gradle.kts to dynamically query and resolve all 25+ Version Catalog plugin marker coordinates in a type-safe dynamic loop.
β€’ Replaced the hardcoded embedded Gradle Kotlin compiler version with dynamic standard library detection: T383838KotlinVersion.CURRENT.toString().
β€’ Implemented root Gradle consolidator task T383838:combineFlatpakSources using JVM-native Json Slurper/Output, deduplicating 2222 entries and injecting Google/Aliyun backup T383838mirror-urls.
β€’ Streamlined reusable-check and release CI workflows, replacing complex T383838jq hacks with a simple, single gradle task invocation.
β€’ Verified T383838spotlessCheck, T383838detekt, and end-to-end completely offline package builds (T383838--offline) completed with 100% success.

2026-05-20 β€” Refactored and polished Flatpak dependency manifests to modern Gradle standards
β€’ Polished the Flatpak generator tasks and convention setup following a comprehensive audit:
1. Centralized version definitions to reference the central T383838libs.versions catalog (T383838kotlin, T383838koin.plugin, etc.) instead of hardcoded strings.
2. Documented every single dependency override and compiler-plugin helper with clear, inline comments (T383838// why: ...).
3. Cleaned out legacy dependencies and streamlined T383838core:database to only capture T383838kspKotlinJvmProcessorClasspath.
4. Changed includeConfigurations to use type-safe T383838setOf instead of T383838listOf to align with Gradle's T383838SetProperty APIs.
β€’ Verified that all static analysis checks pass successfully: T383838./gradlew spotlessCheck detekt is 100% green.
β€’ Validated end-to-end correctness by successfully compiling the app completely offline (T383838--offline) and packaging the release UberJar.

2026-05-20 β€” Fixed Jekyll documentation site build and deployment in CI
β€’ Created T383838docs/index.html to automatically redirect root path requests (T383838/) to the English directory (T383838/en/).
β€’ Updated T383838.github/workflows/docs-deploy.yml to compile the Jekyll root site using T383838--baseurl /${{ github.event.repository.name }} and setup Ruby with version T3838384.0.4 to match project release workflow conventions.
β€’ Updated T383838.github/workflows/docs-release.yml to compile both versioned and root Jekyll sites, assemble them into T383838build/final_site/ with Dokka HTML references, configure correct baseurls respectively, and setup Ruby with version T3838384.0.4.
β€’ Verified that local Gradle docs tasks (T383838generateDocsBundle, T383838validateDocsBundle, T383838publishDocsSite) compile successfully and the redirect file is correctly populated in the output.

2026-05-20 β€” Optimized slow Flatpak CI jobs
β€’ Restrained flatpakGradleGenerator to target only the runtimeClasspath configuration in desktopApp and build-logic:convention modules.
β€’ Updated release.yml and reusable-check.yml to invoke only targeted tasks (:desktopApp:flatpakGradleGenerator and :build-logic:convention:flatpakGradleGenerator) instead of running the task on the root and all subprojects.
β€’ Retained Matrix architecture runner configuration for build validity, as Skiko/Compose Desktop native artifacts are resolved dynamically based on host architecture.
β€’ Cleaned up leftover speed-up workarounds: completely removed the Flatpak Gradle Generator plugin application and tasks from the root project and all other library/feature subprojects (T383838core:ble, T383838core:common, T383838core:database, T383838core:model, T383838core:navigation, T383838core:proto, and T383838feature:messaging), including deleting the unused T383838flatpakKmpAndroidMeta configuration from T383838feature:messaging.
β€’ Verified that local execution of T383838:desktopApp:flatpakGradleGenerator runtimeClasspath resolution speed dropped from 46 seconds to 12 seconds, and all Spotless and Detekt linting checks passed.

2026-05-12 β€” Implemented Apple alignment for docs feature (FR-038)
β€’ Branch: T383838feat/20260507-161858-app-docs-markdown
β€’ Gap analysis against T383838meshtastic-apple completed. Implemented 4 alignment items:
1. Per-page TOC icons via T383838DocPageIconResolver.kt mapping T383838iconId to T383838MeshtasticIcons
2. New T383838docs/user/signal-meter.md (RSSI vs SNR, bar-level criteria, LoRa signal concepts)
3. New T383838docs/user/units-and-locale.md (automatic metric/imperial via T383838MetricFormatter)
4. New T383838.github/workflows/docs-staleness.yml (advisory PR comments for UI changes without doc updates)
β€’ Added T383838iconId: String? field to T383838DocPage and T383838KeywordIndexEntry models
β€’ Updated T383838DocBundleLoader with iconId for all 24 pages plus 2 new entries (signal-meter, units-and-locale)
β€’ Updated T383838DocsBrowserScreen to show leading icons in TOC list items
β€’ Marked T061-T085 as completed in tasks.md (were implemented in prior session)
β€’ Added Phase 9 (T200-T206) for Apple alignment tasks β€” all marked complete
β€’ Skipped Apple-only features: watch, carplay, translate, TipKit, SwiftData docs
β€’ Verified: T383838spotlessApply, T383838detekt, T383838assembleDebug, T383838compileKotlinJvm β€” all green

2026-05-11 β€” Migrated feature/intro UI to commonMain
β€’ Moved intro onboarding UI composables and nav graph from T383838feature/intro/src/androidMain/ into T383838feature/intro/src/commonMain/, adding shared T383838IntroPermissions and T383838IntroSettingsNavigator interfaces plus a common T383838introGraph Navigation 3 extension.
β€’ Refactored T383838AppIntroductionScreen into a thin Android host that provides Android permission/settings adapters via composition locals, and added T383838AndroidIntroPermissions, T383838AndroidIntroSettingsNavigator, and JVM desktop no-op stubs.
β€’ Verified with T383838./gradlew spotlessApply :feature:intro:compileKotlinJvm :feature:intro:compileAndroidMain.

2026-05-11 β€” Added Esp32OtaUpdateHandler common tests
β€’ Created T383838feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/ota/Esp32OtaUpdateHandlerTest.kt.
β€’ Covered WiFi OTA success flow, download/upload progress reporting, connection-drop error handling, hash rejection, verification timeout, and cancellation propagation.
β€’ Validation note: per task instruction, no Gradle commands were run.

2026-05-11 β€” Added profile import/export round-trip coverage
β€’ Created T383838feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/radio/ProfileRoundTripTest.kt.
β€’ Covered T383838RadioConfigViewModel.exportProfile() β†’ T383838importProfile() round trips using the real T383838ExportProfileUseCase and T383838ImportProfileUseCase with an in-memory T383838FileService test double.
β€’ Added representative, empty, and partially populated T383838DeviceProfile cases, asserting message equality and stable protobuf bytes across re-export.
β€’ Validation note: per task instruction, no Gradle commands were run.

2026-05-11 β€” Added DirectRadioControllerImpl common tests
β€’ Created T383838core/service/src/commonTest/kotlin/org/meshtastic/core/service/DirectRadioControllerImplTest.kt.
β€’ Covered service-repository flow delegation, send message/send shared contact behavior, remote config request delegation, location stop, and device address updates.
β€’ Validation note: T383838./gradlew --no-configuration-cache :core:service:allTests is currently blocked by pre-existing compile failures in T383838core/network (T383838MQTTRepositoryImpl unresolved T383838KEEPALIVE_SECONDS) and downstream T383838core/data unresolved T383838org.meshtastic.core.network symbols.

2026-05-11 β€” Added DatabaseManager withDb retry host test
β€’ Created T383838core/database/src/androidHostTest/kotlin/org/meshtastic/core/database/DatabaseManagerWithDbRetryTest.kt.
β€’ Covered the concurrent T383838withDb() retry path by pausing an in-flight query, switching to a new DB, closing the old pool, and asserting the retried query succeeds against the new DB.
β€’ Verified with T383838./gradlew --no-configuration-cache :core:database:spotlessApply :core:database:testAndroidHostTest --tests "org.meshtastic.core.database.DatabaseManagerWithDbRetryTest"
and T383838./gradlew --no-configuration-cache :core:database:spotlessCheck :core:database:testAndroidHostTest.

2026-05-11 β€” Expanded MQTT repository coverage
β€’ Extended T383838core/network/src/commonTest/kotlin/org/meshtastic/core/network/repository/MQTTRepositoryImplTest.kt
with topic construction, JSON/protobuf decoding, reconnect retry, subscription retry, and connection-state coverage.
β€’ Added internal T383838MqttClientSession / T383838MqttClientSetup test hook plus T383838updateConnectionState() in
T383838core/network/src/commonMain/kotlin/org/meshtastic/core/network/repository/MQTTRepositoryImpl.kt to exercise repository behavior without a real broker.
β€’ Verified with T383838./gradlew --no-configuration-cache :core:network:allTests.

2026-05-11 β€” Added RadioConfigViewModel MQTT probe tests
β€’ Extended T383838feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/radio/RadioConfigViewModelTest.kt
with MQTT probe success, timeout, thrown-exception-to-Other, and clear/reset coverage.
β€’ Verified with T383838./gradlew --no-configuration-cache :feature:settings:jvmTest --tests "org.meshtastic.feature.settings.radio.RadioConfigViewModelTest".

2026-05-11 β€” Added MeshRouterImpl accessor routing tests
β€’ Created T383838core/data/src/commonTest/kotlin/org/meshtastic/core/data/manager/MeshRouterImplTest.kt.
β€’ Covered lazy routing access for action-handler send/request/admin calls, traceroute handler access, and service-action passthrough.
β€’ Verified with T383838./gradlew --no-configuration-cache :core:data:allTests.

2026-05-11 β€” Added SettingsViewModel saveDataCsv coverage
β€’ Extended T383838feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/SettingsViewModelTest.kt
with T383838saveDataCsv writes filtered export via file service.
β€’ The new test seeds T383838FakeNodeRepository + T383838FakeMeshLogRepository, captures the T383838FileService.write()
sink with Mokkery, and verifies filtered CSV output from the real T383838ExportDataUseCase.
β€’ Verified with T383838./gradlew --no-configuration-cache :feature:settings:jvmTest --tests "org.meshtastic.feature.settings.SettingsViewModelTest"
after running T383838:feature:settings:spotlessApply.

2026-05-11 β€” Added CompassViewModel accuracy edge-case tests
β€’ Extended T383838feature/node/src/commonTest/kotlin/org/meshtastic/feature/node/compass/CompassViewModelTest.kt
with PDOP-only, HDOP+VDOP, HDOP-only, precision-bits fallback, missing accuracy metadata,
zero-distance angular error, and very-small-distance angular error coverage.
β€’ Validation note: T383838:feature:node:allTests still fails on the pre-existing
T383838MetricsViewModelTest.saveEnvironmentMetricsCSV writes correct data Turbine timeout in JVM and Android host tests.
The new CompassViewModel tests pass in the same run.

2026-05-11 β€” Added Node domain model tests
β€’ Created T383838core/model/src/commonTest/kotlin/org/meshtastic/core/model/NodeTest.kt.
β€’ Covered T383838isOnline, T383838distance, T383838bearing, T383838colors, T383838createFallback, T383838getRelayNode, T383838isUnknownUser, T383838validPosition, T383838hasPKC, and T383838mismatchKey.
β€’ Validation blockers: T383838:core:model:allTests currently fails on pre-existing T383838DataPacketTest iOS compile errors, and direct T383838NodeTest execution hits an existing class-version mismatch in T383838core:common helpers.

2026-05-11 β€” Added HeartbeatSender transport tests
β€’ Created T383838core/network/src/commonTest/kotlin/org/meshtastic/core/network/transport/HeartbeatSenderTest.kt.
β€’ Covered encoded heartbeat payloads, nonce sequencing, interval-driven scheduling, cancellation, zero-interval behavior, and restart semantics using coroutine virtual time.
β€’ Verified with T383838./gradlew --console=plain --no-configuration-cache :core:network:allTests.

2026-05-11 β€” Added BaseMapViewModel waypoint expiration tests
β€’ Extended T383838feature/map/src/commonTest/kotlin/org/meshtastic/feature/map/BaseMapViewModelTest.kt.
β€’ Added coverage for future, boundary (T383838expire == now), never-expiring (T383838expire == 0), and mixed waypoint filtering.
β€’ Verified with T383838./gradlew --no-daemon --no-configuration-cache :feature:map:spotlessCheck :feature:map:allTests.

2026-05-03 β€” Switched Gradle GC to G1GC
β€’ Replaced T383838-XX:+UseZGC with T383838-XX:+UseG1GC in T383838gradle.properties to resolve "not supported" error.
β€’ Added T383838-XX:+ParallelRefProcEnabled for better build performance.
β€’ Verified with Gradle sync.

2026-05-02 β€” CI cost-control PR review fixes
β€’ Applied PR review feedback: encoding fixes in sort-strings.py, NUL-delimited staged-files loop
in ai-guardrail.sh, installation instructions added, typo fix in strings.xml, command order
fixed in AGENTS.md, narrowed .aiexclude/.gitattributes patterns, allTests added to SKILL.md.

2026-04-XX β€” Token Mitigation (Phase 1-3)
β€’ T383838.copilotignore and T383838.aiexclude updated with stricter ignore rules.
β€’ T383838AGENTS.md modularized to ~3KB base; detailed rules moved to T383838.skills/.
β€’ T383838scripts/ai-guardrail.sh added to prevent binary/log leaks (installation: see script header).
β€’ CI Cost Control skill added at T383838.skills/ci-cost-control/SKILL.md.

Golden Context (stable across sessions)
β€’ Always check T383838.skills/compose-ui/strings-index.txt before reading T383838strings.xml.
β€’ Run T383838python3 scripts/sort-strings.py after adding strings to keep the index organized.
β€’ Always check T383838gh run list before pushing.
β€’ Pre-commit hook T383838scripts/ai-guardrail.sh protects against binary leaks (see script for install).

Served by rngit 1.5.4 - Generated in 0.06s